#ifndef Point3D_h
#define Point3D_h
#ifdef __GNUC__
// Avoid tons of warnings with root code
#pragma GCC system_header
#endif

#include <eigen3/Eigen/Dense>

struct Point3D {
    Point3D() {}
    Point3D(double x, double y, double z, double _intensity = 0, double _curvature = 0) {
        position(0) = x;
        position(1) = y;
        position(2) = z;
        this->red = 255;
        this->green = 255;
        this->blue = 255;
        intensity = _intensity;
        curvature = _curvature;
    }

    Point3D(double x, double y, double z, unsigned char red, unsigned char green, unsigned char blue) {
        position(0) = x;
        position(1) = y;
        position(2) = z;
        this->red = red;
        this->green = green;
        this->blue = blue;
    }

    Eigen::Vector3d position;
    unsigned char red;
    unsigned char green;
    unsigned char blue;
    float curvature;
    float intensity;
    double timestamp;
};
#endif /* Point3D_h */
